package IOStreamTest.ObjectStream;

import java.io.*;

/*
对象序列化:
    参与序列化和反序列化的对象必须实现Serializable接口
        public interface Serializable {
        }
        里面没有任何代码
    作用:
        起一个标识的作用，Serializable接口是给jvm看的，jvm看到一个类实现了这个接口，会为该类自动生成一个序列化版本号
 */
public class ObjectOutputStreamTest1 {
    public static void main(String[] args) {
        //创建一个学生对象，将其序列化
        Student stu = new Student(123,"张三");
        //创建序列化对象
        ObjectOutputStream oos = null;
        try {
            oos = new ObjectOutputStream(new FileOutputStream("Students"));
            //开始对象序列化
            oos.writeObject(stu);
            //刷新
            oos.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            if (oos != null) {
                try {
                    oos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
class Student implements Serializable {
    private int id;
    private String name;
    public Student() {
    }

    public Student(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}